package be.ipl.finito.usecases;

import java.util.List;

import javax.ejb.Remote;

import be.ipl.finito.domaine.Case;
import be.ipl.finito.domaine.Jeton;
import be.ipl.finito.domaine.Joueur;
import be.ipl.finito.domaine.Partie;
import be.ipl.finito.domaine.Plateau;
import be.ipl.finito.exceptions.CaseOccupeeException;

@Remote
public interface GestionPlateau {

	Plateau placerJeton(Plateau plateau, Jeton jeton, Case caseJeton)
			throws CaseOccupeeException;

	Plateau deplacerJeton(Plateau plateau, Jeton jeton, Case caseJeton)
			throws CaseOccupeeException;

	int calculerScore(Partie partie, Joueur joueur);

	List<Jeton> calculerSuite(Partie partie, Joueur joueur);

	Plateau ajouterJetonAPoser(Partie partie, Joueur joueur, Jeton jeton);

	Jeton getJetonViaNumero(int numero);
}
